package com.lantosec.hmrp.modules.form.service;

import com.alibaba.fastjson.JSONObject;
import com.lantosec.hmrp.core.kit.Result;
import com.lantosec.hmrp.modules.form.vo.CalculateValueVO;
import com.lantosec.hmrp.modules.form.vo.DecisionSupportResultVO;
import com.lantosec.hmrp.modules.form.vo.DecisionSupportVO;
import com.lantosec.hmrp.modules.form.vo.FormVO;
import com.lantosec.hmrp.modules.workflow.vo.SaveProcessTaskVO;

/**
 * 表单数据 服务
 *
 * @author lichaowei
 * @date 2020/4/22
 */
public interface IFormService {

    /**
     * 保存表单数据
     *
     * @return          表单数据Id
     */
    Result<String> save(SaveProcessTaskVO saveVO);

    /**
     * 根据表单布局Id和流程Id查询表单布局和表单数据
     *
     * @param layoutId  表单布局Id
     * @param dataId    数据Id
     * @return
     */
    Result<FormVO> queryDataByFormId(String layoutId, String dataId);

    /**
     * 查询表单数据
     * @param tableId       表单Id
     * @param primaryId     数据主键Id
     * @return
     */
    JSONObject selectData(String tableId, String primaryId);

    /**
     * 回写数据
     * @param layoutId  表单布局Id
     * @param dataId    回写数据源记录Id
     * @param userId    操作用户Id
     */
    void writeBackData(String layoutId, String dataId, String userId);

    /**
     * 计算值字段的值
     *
     * @return
     */
    Result<Object> calculateValue(CalculateValueVO calculateValueVO);

    /**
     * 辅助决策
     *
     */
    Result<DecisionSupportResultVO> decisionSupport(DecisionSupportVO entity);
}
